package com.lh.java.basic.grammer;

class Info<T> {
	private T var; // 定义泛型变量

	public void setVar(T var) {
		this.var = var;
	}

	public T getVar() {
		return this.var;
	}

	public String toString() { // 直接打印
		return this.var.toString();
	}
};

public class GenericDemo {
	public static void main(String args[]) {
		Info<String> i = new Info<String>(); // 使用String为泛型类型
		i.setVar("it"); // 设置内容
		fun(i);
		Info<Integer> i1 = new Info<Integer>(); // 声明Integer的泛型对象
		Info<Float> i2 = new Info<Float>(); // 声明Float的泛型对象
		Info<String> i3 = new Info<String>();
		i1.setVar(30); // 设置整数，自动装箱
		i2.setVar(30.1f); // 设置小数，自动装箱
		i3.setVar("i am is string");
		fun2(i1);
		fun2(i2);
		fun3(i3);
		
		

	}

	public static void fun2(Info<? extends Number> temp) { // 只能接收Number及其Number的子类
		System.out.print(temp + "、");
	}

	public static void fun(Info<?> temp) { // 可以接收任意的泛型对象
		System.out.println("内容：" + temp);
	}
	public static void fun3(Info<? super String> temp){    // 只能接收String或Object类型的泛型  
        System.out.print(temp + "、") ;  
    } 
};